package d1_properties;

import java.io.FileInputStream;
import java.util.Properties;
import java.util.Set;

public class PropertiesDemo01 {
    public static void main(String[] args) throws Exception {
        //目标: Properties读取属性文件中的键值对数据。
        //1、创建属性集对象, 代表一个属性文件
        Properties properties = new Properties();//其实是属于Map,但是它不喜欢人它是他们家族的
        System.out.println(properties);

        //2、加载属性文件信息到属性集对象中去。
        properties.load(new FileInputStream("" +
                "javapromax\\day11-speical-file-log-code\\src\\users.properties"));  //键值对数据存到一个输出管道中, 对应的文件
        /*properties.load(new InputStreamReader(
                new FileInputStream("javapromax\\day11-speical-file-log-code\\src\\users.properties"),
                StandardCharsets.UTF_8));*/
        //现在就已经将属性文件users.properties中的键值对,加载到了properties对象中
        //由于其是属于Map集合,直接打印
        System.out.println(properties);

        //根据键取值
        System.out.println(properties.get("陈平安"));
        //Properties有自己的方法 getProperty(键)-->返回值
        System.out.println(properties.getProperty("陈平安"));

        //通过键获取值,进行遍历
        Set<String> keys = properties.stringPropertyNames();
        for (String key : keys) {
            String value = properties.getProperty(key);
            System.out.println(key + "------->" + value);
        }
        //3、遍历数据
        properties.forEach((k, v) -> System.out.println(k + "---->" + v));








        /*
        *
        * # 下面是一个属性文件的各种信息,存储的是用户名和密码--->上面有一个设置图标 -->?说明做java系统的配置文件
        admin=12345
        陈平安=yefang
        周芷若=zhouzhiruo
        姬紫月=yefan
        # 用字节输入流记性读取(默认使用UTF-8),但是属性集不是按照UTF-8记性编码, 用字符流试一下,idea底层可能会帮你处理-->说明idea中没有做一些控制, 让他不要把属性集的这些编码, 用成它默认的Unicode的编码
        # 而选择用UTF-8

        * */
    }
}
